//package com.zmn.plat.dubbo.impl.servcategory;
//
//import java.util.*;
//import java.util.stream.Collectors;
//
//import javax.annotation.Resource;
//import javax.validation.constraints.NotNull;
//import javax.validation.constraints.Positive;
//
//import com.zmn.plat.business.interfaces.channel.ChannelServiceCategoryBService;
//import com.zmn.plat.business.interfaces.product.productgroup.ProductGroupBService;
//import com.zmn.plat.common.dto.category.*;
//import com.zmn.plat.model.entity.product.ServProduct;
//import com.zmn.plat.model.vo.servcategory.CategoryProductGroupVO;
//import com.zmn.plat.services.interfaces.channel.ChannelService;
//import org.apache.dubbo.config.annotation.Service;
//import org.springframework.beans.BeanUtils;
//import org.springframework.util.CollectionUtils;
//
//import com.zmn.common.constant.GlobalConsts;
//import com.zmn.common.dto.KvDTO;
//import com.zmn.common.dto.VtDTO;
//import com.zmn.common.dto2.ResponseDTO;
//import com.zmn.common.utils.collection.CollectionUtil;
//import com.zmn.common.utils.number.NumberUtil;
//import com.zmn.common.utils.reflect.BeanMapper;
//import com.zmn.manager.common.database.annotation.ReadOnlyConnection;
//import com.zmn.plat.business.interfaces.product.ServProductBService;
//import com.zmn.plat.business.interfaces.servcategory.ServAssCategoryBService;
//import com.zmn.plat.common.constant.ProductConsts;
//import com.zmn.plat.common.dictionary.PlatErrorCodeDict;
//import com.zmn.plat.common.dto.servcategory.ServAssCategoryDRO;
//import com.zmn.plat.common.exception.PlatException;
//import com.zmn.plat.dubbo.interfaces.servcategory.ServAssCategoryListRemoteService;
//import com.zmn.plat.dubbo.utils.DubboConsts;
//import com.zmn.plat.manager.dictionary.ProductDict;
//import com.zmn.plat.model.entity.servcategory.ServAssCategoryQuery;
//import com.zmn.plat.model.vo.servcategory.ServAssCategoryVO;
//import com.zmn.plat.services.interfaces.product.ServProductService;
//import com.zmn.plat.services.interfaces.servcategory.ServAssCategoryService;
//
//import lombok.extern.slf4j.Slf4j;
//
///**
// * @author duanzuocai
// * @version v1.0
// * @since 2018/10/29 20:48
// */
//@Service(version = DubboConsts.INTERFACE_VERSION, validation = "true")
//@Slf4j
//public class ServAssCategoryListRemoteServiceImpl implements ServAssCategoryListRemoteService {
//
//    private static final String TAG = "服务类型产品类型关联 dubbo 接口";
//
//    @Resource
//    ServAssCategoryService servAssCategoryService;
//
//    @Resource
//    ServAssCategoryBService servAssCategoryBService;
//
//    @Resource
//    ServProductService servProductService;
//
//    @Resource
//    ServProductBService servProductBService;
//
//    @Resource
//    ChannelService channelService;
//
//    @Resource
//    ProductGroupBService productGroupBService;
//
//    @Resource
//    ChannelServiceCategoryBService channelServiceCategoryBService;
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<String> getTstDripByServCategIdAndCategId(Integer servCategId, Integer categId) {
//
//        log.info("ServAssCategoryListRemoteServiceImpl.getTstDripByServCategIdAndCategId入参：{},{}", servCategId, categId);
//        try {
//            if (NumberUtil.isNullOrZero(servCategId) || NumberUtil.isNullOrZero(categId)) {
//                log.error("ServAssCategoryListRemoteServiceImpl.getTstDripByServCategIdAndCategId入参为空,servCategId={},categTwoId={}", servCategId, categId);
//                throw new PlatException(PlatErrorCodeDict.ERROR_CODE_PANAM_NULL);
//            }
//            // 查询服务类型、产品分类关联
//            List<ServAssCategoryVO> servAssCategories = servAssCategoryService.listByQuery(ServAssCategoryQuery.builder()
//                    .servCategId(servCategId)
//                    .categId(categId).build());
//            if (CollectionUtil.isNullOrEmpty(servAssCategories)) {
//                throw new PlatException(PlatErrorCodeDict.ERROR_CODE_RESULT_NULL);
//            }
//            return ResponseDTO.success(servAssCategories.get(0).getTstDrip());
//        } catch (PlatException e) {
//            return ResponseDTO.fromErrorCodeTable(e.getErrorCode());
//        } catch (Exception e) {
//            log.error("ServAssCategoryListRemoteServiceImpl.getTstDripByServCategIdAndCategId查询失败,原因:{}", e.getMessage(), e);
//            return ResponseDTO.fail("查询失败，程序异常");
//        }
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<String> getTstDripByBkProductId(Integer bkProductId) {
//
//        log.info("ServAssCategoryListRemoteServiceImpl.getTstDripByBkProductId入参：bkProductId={}", bkProductId);
//        try {
//            if (NumberUtil.isNullOrZero(bkProductId) ) {
//                log.error("ServAssCategoryListRemoteServiceImpl.getTstDripByBkProductId入参为空,bkProductId={}", bkProductId);
//                throw new PlatException(PlatErrorCodeDict.ERROR_CODE_PANAM_NULL);
//            }
//            ServProduct servProduct = servProductService.findByKeyWithCache(bkProductId);
//            if (Objects.isNull(servProduct) ) {
//                log.error("ServAssCategoryListRemoteServiceImpl.getTstDripByBkProductId查询后台产品失败,bkProductId={}", bkProductId);
//                throw new PlatException(PlatErrorCodeDict.ERROR_CODE_RESULT_NULL);
//            }
//
//            // 查询服务类型、产品分类关联
//            List<ServAssCategoryVO> servAssCategories = servAssCategoryService.listByQuery(ServAssCategoryQuery.builder()
//                    .servCategId(servProduct.getServCategId())
//                    .categId(servProduct.getCategId()).build());
//            if (CollectionUtil.isNullOrEmpty(servAssCategories)) {
//                throw new PlatException(PlatErrorCodeDict.ERROR_CODE_RESULT_NULL);
//            }
//            return ResponseDTO.success(servAssCategories.get(0).getTstDrip());
//        } catch (PlatException e) {
//            return ResponseDTO.fromErrorCodeTable(e.getErrorCode());
//        } catch (Exception e) {
//            log.error("ServAssCategoryListRemoteServiceImpl.getTstDripByServCategIdAndCategId查询失败,原因:{}", e.getMessage(), e);
//            return ResponseDTO.fail("查询失败，程序异常");
//        }
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<String> getDisclaimerByServAndCategTwoId(@NotNull(message = "servCategId不能为空") @Positive(message = "servCategId必须为大于0的正整数") Integer servCategId,
//        @NotNull(message = "categTwoId不能为空") @Positive(message = "categTwoId必须为大于0的正整数") Integer categTwoId) {
//        log.info("getDisclaimerByServAndCategTwoId param is :servCategId={},categTwoId={}", servCategId, categTwoId);
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setServCategId(servCategId);
//        query.setCategId(categTwoId);
//        List<ServAssCategoryVO> servAssCategoryVOS = servAssCategoryService.listByQuery(query);
//
//        if (CollectionUtils.isEmpty(servAssCategoryVOS)) {
//            log.error("servAssCategoryVOS is null,errorCode:{}", PlatErrorCodeDict.ERROR_CODE_SERCATEGORY_RELATIONSHIP_NOT_EXISTS);
//            return ResponseDTO.fromErrorCodeTable(PlatErrorCodeDict.ERROR_CODE_SERCATEGORY_RELATIONSHIP_NOT_EXISTS);
//        }
//
//        return ResponseDTO.success(servAssCategoryVOS.get(0).getDisclaimer());
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<CategoryProductGroupDRO> getProductGroupByCategId(@NotNull(message = "servCategId不能为空") @Positive(message = "servCategId必须为大于0的正整数") Integer servCategId,
//        @NotNull(message = "categTwoId不能为空") @Positive(message = "categTwoId必须为大于0的正整数") Integer categTwoId) {
//        log.info("getProductGroupByShowCategId param is :servCategId={},categTwoId={}", servCategId, categTwoId);
//
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setServCategId(servCategId);
//        query.setCategId(categTwoId);
//        List<ServAssCategoryVO> servAssCategoryVOS = servAssCategoryService.listByQuery(query);
//
//        if (CollectionUtils.isEmpty(servAssCategoryVOS)) {
//            log.error("servAssCategoryVOS is null,errorCode:", PlatErrorCodeDict.ERROR_CODE_SERCATEGORY_RELATIONSHIP_NOT_EXISTS);
//            return ResponseDTO.fromErrorCodeTable(PlatErrorCodeDict.ERROR_CODE_SERCATEGORY_RELATIONSHIP_NOT_EXISTS);
//        }
//        ServAssCategoryVO servAssCategoryVO = servAssCategoryVOS.get(0);
//        CategoryProductGroupDRO categoryProductGroupDRO = new CategoryProductGroupDRO(servAssCategoryVO.getServCategId(), servAssCategoryVO.getCategOneId(), servAssCategoryVO.getCategId(),
//            servAssCategoryVO.getProductGroupcId(), servAssCategoryVO.getProductGroupcName(), servAssCategoryVO.getProductGroupfId(), servAssCategoryVO.getProductGroupfName(),
//            servAssCategoryVO.getProductGroupbId(), servAssCategoryVO.getProductGroupbName());
//
//        return ResponseDTO.success(categoryProductGroupDRO);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<CategorySimpleProductGroupDRO> getProductGroupByCategIdAndBizType(Integer servCategId, Integer categTwoId, Integer bizType) {
//        log.info("getProductGroupByCategIdAndBizType param is：servCategId={}，categTwoId={}，bizType={}", servCategId, categTwoId, bizType);
//        try {
//            CategorySimpleProductGroupDRO result = productGroupBService.findByCategIdAndBizType(servCategId, categTwoId, bizType);
//            return ResponseDTO.success(result);
//        } catch (PlatException e) {
//            return ResponseDTO.fromErrorCodeTable(e.getErrorCode());
//        } catch (Exception ex) {
//            log.error("getProductGroupByCategIdAndBizType error. :servCategId={}，categTwoId={}，bizType={}", servCategId, categTwoId, bizType, ex);
//            return ResponseDTO.fail(GlobalConsts.FAILD_MSG);
//        }
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<CategoryProductGroupDRO>> listCategoryAndProductGroup() {
//        try {
//            List<CategoryProductGroupVO> result = servAssCategoryService.listCategoryAndProductGroup();
//            List<CategoryProductGroupDRO> dros = result.stream().map(categoryProductGroupVO -> {
//                CategoryProductGroupDRO categoryProductGroupDRO = new CategoryProductGroupDRO();
//                BeanUtils.copyProperties(categoryProductGroupVO, categoryProductGroupDRO);
//                return categoryProductGroupDRO;
//            }).collect(Collectors.toList());
//            return ResponseDTO.success(dros);
//        } catch (Exception ex) {
//            return ResponseDTO.fail(GlobalConsts.FAILD_MSG);
//        }
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<VtDTO> getProductGroupByShowCategId(Integer servCategId, Integer showCategTwoId, Integer bizType) {
//        log.info("getProductGroupByShowCategId param is :servCategId={},showCategTwoId={},bizType={}", servCategId, showCategTwoId, bizType);
//        try {
//            VtDTO vt = servAssCategoryService.findProductGroupVtByShowCategId(servCategId, showCategTwoId, bizType);
//            return ResponseDTO.success(vt);
//
//        } catch (PlatException e) {
//            return ResponseDTO.fromErrorCodeTable(e.getErrorCode());
//        } catch (Exception ex) {
//            log.error("getProductGroupByShowCategId error. :servCategId={},showCategTwoId={},bizType={}", servCategId, showCategTwoId, bizType, ex);
//            return ResponseDTO.fail(GlobalConsts.FAILD_MSG);
//        }
//
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<CategorySimpleProductGroupDRO> getProductGroupByShowCategIdAndBizType(Integer servCategId, Integer showCategTwoId, Integer bizType) {
//        log.info("getProductGroupByShowCategIdAndBizType param is：servCategId={}，showCategTwoId={}，bizType={}", servCategId, showCategTwoId, bizType);
//        try {
//            CategorySimpleProductGroupDRO result = productGroupBService.findByShowCategIdAndBizType(servCategId, showCategTwoId, bizType);
//            return ResponseDTO.success(result);
//        } catch (PlatException e) {
//            return ResponseDTO.fromErrorCodeTable(e.getErrorCode());
//        } catch (Exception ex) {
//            log.error("getProductGroupByShowCategIdAndBizType error. :servCategId={}，showCategTwoId={}，bizType={}", servCategId, showCategTwoId, bizType, ex);
//            return ResponseDTO.fail(GlobalConsts.FAILD_MSG);
//        }
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<CategoryDRO>> listByServiceCategId(Integer serviceCategId) {
//        log.info("listByServiceCategId；{}", serviceCategId);
//        return this.listCategOneByServiceCategIdAndShowType(serviceCategId, ProductDict.ERP_PRODUCT_TYPE);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<CategoryDRO>> listCategOneByServiceCategIdAndShowType(Integer serviceCategId, Integer showType) {
//        log.info("listCategOneByServiceCategIdAndShowType参数为；{},{}", serviceCategId, showType);
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setServCategId(serviceCategId);
//        query.setCategOneStatus(GlobalConsts.YES);
//        query.setCategTwoStatus(GlobalConsts.YES);
//        query.setShowType(showType);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(query);
//
//        List<CategoryDRO> dros = new ArrayList<>();
//        for (ServAssCategoryVO vo : list) {
//            CategoryDRO dro = new CategoryDRO();
//            dro.setCategId(vo.getCategOneId());
//            dro.setName(vo.getCategOneName());
//            dro.setLevel(GlobalConsts.LEVEL_1);
//            dro.setDesc(vo.getDesc());
//
//            if (dros.indexOf(dro) != -1) {
//                continue;
//            }
//            dros.add(dro);
//        }
//
//        return ResponseDTO.success(dros, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<CategoryDRO>> listCategOneByServCategIdsAndShowType(List<Integer> servCategIds, Integer showType) {
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setServCategIds(servCategIds);
//        query.setCategOneStatus(GlobalConsts.YES);
//        query.setCategTwoStatus(GlobalConsts.YES);
//        query.setShowType(showType);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(query);
//
//        List<CategoryDRO> dros = new ArrayList<>();
//        for (ServAssCategoryVO vo : list) {
//            CategoryDRO dro = new CategoryDRO();
//            dro.setCategId(vo.getCategOneId());
//            dro.setName(vo.getCategOneName());
//            dro.setLevel(GlobalConsts.LEVEL_1);
//            dro.setDesc(vo.getDesc());
//
//            if (dros.indexOf(dro) != -1) {
//                continue;
//            }
//            dros.add(dro);
//        }
//
//        return ResponseDTO.success(dros, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<AssCategoryDRO>> listServiceCategoryByShowType(@NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") Integer showType) {
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setCategOneStatus(GlobalConsts.YES);
//        query.setCategTwoStatus(GlobalConsts.YES);
//        query.setShowType(showType);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(query);
//
//        List<AssCategoryDRO> dros = list.stream().map(servAssCategoryVO -> {
//            AssCategoryDRO assCategoryDRO = new AssCategoryDRO();
//            BeanUtils.copyProperties(servAssCategoryVO, assCategoryDRO);
//            return assCategoryDRO;
//        }).collect(Collectors.toList());
//
//        return ResponseDTO.success(dros, GlobalConsts.SUCCESS_MSG);
//    }
//
//    /**
//     * 描述: 根据showtypecha
//     *
//     * @param showType
//     *            显示的分类
//     * @return com.zmn.common.dto2.ResponseDTO<com.zmn.plat.common.dto.category.AssCategoryDRO>
//     * @author wangjie
//     * @since 2020/3/10
//     **/
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<AssCategoryDRO>> listCategByShowType(Integer showType) {
//        log.info("listCategByShowType param is :showType={}", showType);
//        if (NumberUtil.isNullOrZero(showType)) {
//            log.error("showType入参不能为空");
//            return ResponseDTO.fromErrorCodeTable(PlatErrorCodeDict.ERROR_CODE_PANAM_NULL);
//        }
//        ServAssCategoryQuery servAssCategoryQuery = new ServAssCategoryQuery();
//        servAssCategoryQuery.setCategOneStatus(GlobalConsts.YES);
//        servAssCategoryQuery.setCategTwoStatus(GlobalConsts.YES);
//        servAssCategoryQuery.setShowType(showType);
//        servAssCategoryQuery.setServCategShowStatus(GlobalConsts.YES);
//        List<AssCategoryDRO> collect = Optional.ofNullable(servAssCategoryService.listByQuery(servAssCategoryQuery)).orElse(Collections.emptyList()).stream()
//            .map(mm -> BeanMapper.map(mm, AssCategoryDRO.class)).collect(Collectors.toList());
//        return ResponseDTO.success(collect, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<AssSimpleCategoryDRO>> listAssSimpleCategByShowProductId(Integer showProductId) {
//        log.info("listAssSimpleCategByShowProductId params is : listAssSimpleCategByShowProductId={}", showProductId);
//        try {
//            List<AssSimpleCategoryDRO> dros = servProductBService.listAssSimpleCategByShowProductId(showProductId);
//            return ResponseDTO.success(dros);
//        } catch (PlatException e) {
//            return ResponseDTO.fromErrorCodeTable(e.getErrorCode());
//        } catch (Exception ex) {
//            log.error("getProductGroupByShowCategId error. :showProductId={}", showProductId, ex);
//            return ResponseDTO.fail(GlobalConsts.FAILD_MSG);
//        }
//
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<KvDTO>> listCategKVByServiceCategIdAndShowType(Integer serviceCategId, Integer showType) {
//        log.info("listCategKVByServiceCategIdAndShowType params is: serviceCategId={},showType={}", serviceCategId, showType);
//
//        try {
//            List<KvDTO> list = servAssCategoryBService.listCategKVByServiceCategIdAndShowType(serviceCategId, showType);
//            return ResponseDTO.success(list);
//        } catch (PlatException e) {
//            return ResponseDTO.fromErrorCodeTable(e.getErrorCode());
//        } catch (Exception e) {
//            log.error("listCategKVByServiceCategIdAndShowType error.serviceCategId={},showType={}", serviceCategId, showType, e);
//            return ResponseDTO.fail(GlobalConsts.FAILD_MSG);
//        }
//
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<CategoryDRO>> listByServiceCategTwoId(Integer serviceCategId) {
//        log.info("listByServiceCategTwoId params is: serviceCategId={}", serviceCategId);
//        return this.listCategByServiceCategIdAndShowType(serviceCategId, ProductDict.ERP_PRODUCT_TYPE);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<CategoryDRO>> listCategByServiceCategIdAndShowType(Integer serviceCategId, Integer show) {
//        log.info("listCategByServiceCategIdAndShowType params is: serviceCategId={},show={}", serviceCategId, show);
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setServCategId(serviceCategId);
//        query.setShowType(show);
//        query.setCategOneStatus(GlobalConsts.YES);
//        query.setCategTwoStatus(GlobalConsts.YES);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(query);
//
//        return this.entityToDRO(list);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<ServAssCategoryDRO>> listCategTwoByServiceCategId(Integer serviceCategId) {
//        log.info("listCategTwoByServiceCategId params is: serviceCategId={}", serviceCategId);
//        return this.listCategTwoByServiceCategIdAndShowType(serviceCategId, ProductDict.ERP_PRODUCT_TYPE);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<ServAssCategoryDRO>> listCategTwoByServiceCategIdAndShowType(Integer serviceCategId, Integer showType) {
//        log.info("listCategTwoByServiceCategIdAndShowType params is: serviceCategId={},showType:{}", serviceCategId, showType);
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setServCategId(serviceCategId);
//        query.setShowType(showType);
//        query.setCategOneStatus(GlobalConsts.YES);
//        query.setCategTwoStatus(GlobalConsts.YES);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(query);
//
//        return this.entityToAssDRO(list);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<ServAssCategoryDRO>> listCategTwoByServiceCategIdAndCategOneIdAndCategTwoId(Integer serviceCategId, Integer categOneId, Integer categTwoId) {
//        log.info("listCategTwoByServiceCategIdAndCategOneIdAndCategTwoId params is: serviceCategId={},categOneId:{},categTwoId:{}", serviceCategId, categOneId, categTwoId);
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setServCategId(serviceCategId);
//        query.setCategOneId(categOneId);
//        query.setCategId(categTwoId);
//        query.setCategOneStatus(GlobalConsts.YES);
//        query.setCategTwoStatus(GlobalConsts.YES);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(query);
//
//        return this.entityToAssDRO(list);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<CategoryDRO>> listByServiceOfProduct(Integer serviceCategId) {
//        log.info("listByServiceOfProduct params is: serviceCategId={}", serviceCategId);
//
//        if (NumberUtil.isNullOrZero(serviceCategId)) {
//            ResponseDTO.fromErrorCodeTable(PlatErrorCodeDict.ERROR_CODE_PANAM_NULL);
//        }
//
//        List<Integer> categIds = servProductService.findCategIds(serviceCategId, GlobalConsts.YES, GlobalConsts.YES);
//
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setServCategId(serviceCategId);
//        if (CollectionUtils.isEmpty(categIds)) {
//            return ResponseDTO.success(Collections.EMPTY_LIST, GlobalConsts.SUCCESS_MSG);
//        }
//        query.setCategIds(categIds);
//        query.setCategOneStatus(GlobalConsts.YES);
//        query.setCategTwoStatus(GlobalConsts.YES);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(query);
//
//        return this.entityToDRO(list);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<CategoryDRO>> listByCategOneIdAndCategId(Integer servCategId, Integer categId) {
//        log.info("listByServiceOfProduct params is: servCategId={},categId={}", servCategId, categId);
//
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setCategOneId(categId);
//        query.setServCategId(servCategId);
//        query.setCategOneStatus(GlobalConsts.YES);
//        query.setCategTwoStatus(GlobalConsts.YES);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(query);
//
//        List<CategoryDRO> dros = this.listToDROList(list);
//
//        return ResponseDTO.success(dros, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<CategoryDRO>> listByCategOneIdListAndCategIdList(Integer servCategId, List<Integer> categIdList) {
//        log.info("listByCategOneIdListAndCategIdList params is: servCategId={},categIdList={}", servCategId, categIdList);
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setCategOneIds(categIdList);
//        query.setServCategId(servCategId);
//        query.setCategOneStatus(GlobalConsts.YES);
//        query.setCategTwoStatus(GlobalConsts.YES);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(query);
//
//        List<CategoryDRO> dros = this.listToDROList(list);
//
//        return ResponseDTO.success(dros, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<VtDTO>> listCategoryVtByServCategIdAndCategOneIds(Integer servCategId, List<Integer> categIdList) {
//        log.info("listCategoryVtByServCategIdAndCategOneIds params is: servCategId={},categIdList={}", servCategId, categIdList);
//
//        ServAssCategoryQuery query = new ServAssCategoryQuery();
//        query.setCategOneIds(categIdList);
//        query.setServCategId(servCategId);
//        query.setCategOneStatus(GlobalConsts.YES);
//        query.setCategTwoStatus(GlobalConsts.YES);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(query);
//
//        List<CategoryDRO> dros = this.listToDROList(list);
//        if (CollectionUtil.isNullOrEmpty(dros)) {
//            return ResponseDTO.success(Collections.EMPTY_LIST);
//        }
//
//        List<VtDTO> items = dros.stream().map(item -> {
//            return new VtDTO(item.getCategId(), item.getName());
//        }).collect(Collectors.toList());
//
//        return ResponseDTO.success(items, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<KvDTO>> listCategFromProductByServCategIdAndCategOneId(Integer servCategId, Integer categOneId) {
//        log.info("listCategFromProductByServCategIdAndCategOneId params is: servCategId={},categOneId={}", servCategId, categOneId);
//
//        List<KvDTO> dtos = servAssCategoryService.findCategFromProduct(servCategId, categOneId);
//
//        return ResponseDTO.success(dtos, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    public ResponseDTO<List<ServAssCategoryDRO>> listServAssCategoryByChannelIdAndShowType(Integer channelId, Integer showType) {
//        log.info("listServAssCategoryByChannelIdAndShowType params is: channelId={},showType={}", channelId, showType);
//
//        ServAssCategoryQuery categoryQuery = new ServAssCategoryQuery();
//        categoryQuery.setCategOneStatus(GlobalConsts.YES);
//        categoryQuery.setCategTwoStatus(GlobalConsts.YES);
//        categoryQuery.setShowType(showType);
//        if (ProductConsts.EC_PRODUCT_TYPE.equals(showType)) {
//            categoryQuery.setServCategShowStatus(GlobalConsts.YES);
//        } else {
//            categoryQuery.setServCategStatus(GlobalConsts.YES);
//        }
//
//        // 渠道如果自身未开通分类取上级渠道开通分类
//        try {
//            channelId = channelServiceCategoryBService.getAvailableCategoryChannelId(channelId);
//        } catch (PlatException e) {
//            return ResponseDTO.success(Collections.EMPTY_LIST);
//        }
//
//        categoryQuery.setChannelId(channelId);
//        List<ServAssCategoryVO> list = servAssCategoryService.listByQuery(categoryQuery);
//
//        return this.entityToAssDRO(list);
//    }
//
//    private List<CategoryDRO> listToDROList(List<ServAssCategoryVO> list) {
//        List<CategoryDRO> dros = new ArrayList<>();
//        for (ServAssCategoryVO vo : list) {
//            CategoryDRO dro = new CategoryDRO();
//            dro.setCategId(vo.getCategId());
//            dro.setName(vo.getCategName());
//            if (dros.indexOf(dro) != -1) {
//                continue;
//            }
//            dros.add(dro);
//        }
//        return dros;
//    }
//
//    private ResponseDTO<List<CategoryDRO>> entityToDRO(List<ServAssCategoryVO> list) {
//        List<CategoryDRO> dros = new ArrayList<>();
//        for (ServAssCategoryVO vo : list) {
//            CategoryDRO dro = new CategoryDRO();
//            dro.setCategId(vo.getCategId());
//            dro.setName(vo.getCategName());
//            dro.setParentId(vo.getCategOneId());
//            dro.setLevel(GlobalConsts.LEVEL_2);
//            dro.setDesc(vo.getDesc());
//            dros.add(dro);
//        }
//
//        return ResponseDTO.success(dros, GlobalConsts.SUCCESS_MSG);
//    }
//
//    private ResponseDTO<List<ServAssCategoryDRO>> entityToAssDRO(List<ServAssCategoryVO> list) {
//        List<ServAssCategoryDRO> dros = new ArrayList<>();
//        for (ServAssCategoryVO vo : list) {
//            ServAssCategoryDRO dro = new ServAssCategoryDRO();
//            dro.setCategId(vo.getCategId());
//            dro.setCategTwoId(vo.getCategId());
//            dro.setCategName(vo.getCategName());
//            dro.setCategTowName(vo.getCategName());
//            dro.setCategOneId(vo.getCategOneId());
//            dro.setCategOneName(vo.getCategOneName());
//            dro.setServCategId(vo.getServCategId());
//            dro.setServCategName(vo.getServCategName());
//            dro.setServCategSort(vo.getServCategSort());
//            dro.setCategOneSort(vo.getCategOneSort());
//            dro.setCategSort(vo.getCategSort());
//            dros.add(dro);
//        }
//        return ResponseDTO.success(dros, GlobalConsts.SUCCESS_MSG);
//    }
//}
